<?php
class ventaService {
	private $numeros;
	private $movimientos;
	private $detalles;
	
	public function ventaService(){
		$this->numeros=new numeroService();
		$this->movimientos = new movimientosService();
		$this->detalles =  new detalleService();
	}
	public function registrarVenta($data)
	{
		
		$model=new Venta;
		$transaction=$model->dbConnection->beginTransaction();
		
		$model->attributes=$_POST['Venta'];
		$cliente = Cliente::model()->findByPK($model->cliente);
		
		//Agrego la informacion de comprobante al modelo
		$model->tipo_comprobante =  ($cliente->posicionIva->tFactura == 'A'? 1 : 9);
		$model->numero_comprobante =  ($cliente->posicionIva->tFactura == 'A'? $this->numeros->nextFacturaA() : Numero::model()->findByPK(2)->nFacturaB+1 );
		$model->fecha = date('Y-m-d');
		
		//Actualizo los numeros
		($cliente->posicionIva->tFactura == 'A'? $this->numeros->updateFacturaA() : $this->numeros->updateFacturaB() );
		
		//Asumiendo que no se trabaja con Tarjeta de Creditos
		$model->forma_cobro=($cliente->forma_pago==1 || is_null($cliente->formaPago->banco) ?1:$cliente->formaPago->banco);
		$model->saldado = ($model->forma_cobro==1 || $model->forma_cobro==8 ?1:0);
		
		//Se guarda los movientos
		$total = $model->neto + $model->iva + $model->percepcion + $model->exento;
		if ($model->save())
		{
			$transaction->commit();
			$this->movimientos->insertMovimiento($model->forma_cobro, $model->prefijo_comprobante, $model->tipo_comprobante, $model->numero_comprobante, $model->cliente, $total, $model->fecha,'Venta Mayorista');
			
			//Registro los detalles de la venta, y ademas se actualiza el inventario de cada producto
			$this->detalles->registrarDetalles($_POST['data'],$model->idventa);
			return $model->idventa;
		}
		else
		{
			var_dump($model->getErrors());
		}
		exit();
		if($model->save())
			echo "Modelo Guardado";
	}
	public function anularVenta($id)
	{
		$anulado = new Venta();
		$original = Venta::model()->findByPk($id);
		
		//Asignacion de informacion
		$anulado->cliente = $original->cliente;
		$anulado->vendedor = $original->vendedor;
		$anulado->forma_cobro = $original->forma_cobro;
		$anulado->destinatario = $original->destinatario;
		$anulado->distribucion = $original->distribucion;
		$anulado->dir_facturacion = $original->dir_facturacion;
		$anulado->prefijo_comprobante = $original->prefijo_comprobante;
		$anulado->neto = 0 - $original->neto;
		$anulado->iva = 0 - $original->iva;
		$anulado->percepcion = 0 - $original->percepcion;
		$anulado->exento =  0 - $original->exento;
		$anulado->tipo_comprobante = ($original->tipo_comprobante == 1?3:11);
		$anulado->numero_comprobante = ($original->tipo_comprobante == 1?$this->numeros->nextNotaA():$this->numeros->nextNotaB());
		($original->tipo_comprobante == 1?$this->numeros->updateNotaA():$this->numeros->updateNotaB());
		
		$anulado->save();
		$original->anulado = 1;
		$original->fecha_anulado = date('Y-m-d');
		$anulado->fecha = date('Y-m-d');;
		$original->save();
		$this->movimientos->movimientoNota($original, $anulado);
		
		$detalle_original = DetalleVenta::model()->findAll('venta=:param',array(':param'=>$id));
		foreach ($detalle_original as $fila)
		{echo var_dump($fila->producto0->nombre);}
		
	}
	
}
?>